<?php

// 查看环境信息
// phpinfo();
$a = 10;
$a = 10;
// 全局变量：整个脚本
// 局部变量：作用于函数内部
// 静态变量：保留上一次运行的结果
// global 全部变量  引用全局变量

// 如果给a一个&符 相当于直接改变全局变量 直接就相当于在函数中改变全局变量
// function text(&$a){
//     // 局部变量在运行完事后 会 销毁
//     $a = 20;
//     return $a;
// }
// text($a);
// // 正常输出的情况下 a的值不会发生任何变化

// var_dump($a);

// 另一种改变全局变量的方式
// function text1(){
//     // 局部变量在运行完事后 会 销毁
//     // global 引用外部的全局变量
//     global $a;
//     $a =39;
//     return $a;
// }
// text1();
// // 正常输出的情况下 a的值不会发生任何变化

// var_dump($a);
// 静态变量
// 使用静态变量 每次改变值的时候会有保留
// function text2(){
//     static $num;

//     $num+=10;
//     return $num;

// }
// var_dump(text2());
// var_dump(text2());
// var_dump(text2());
// var_dump(text2());

// include 非致命错误 require 致命错误 调用另一个 php文件 如果文件不存在 报错
// include_once 查看有没有重复引用 引用的 话不奏效
// 一般用这个
// require_once("helper.php");
// echo helper();

// 调用换行常量
// echo PHP_EOL;// /r/t

/* 数学函数 */

$b = -3.6;
/* 绝对值 */
echo abs($b);
echo "<br>";
$a = 3.2;
echo ceil($a);
echo "<br>";

$c = 2.7;
echo floor($c);
echo "<br>";
// 范围内的随机整数
echo mt_rand(0,100);
echo "<br>";
echo round(3.5);
echo "<br>";

// 时间戳的问题
// 输出当前时间戳 从1970：0：0：0 ~ 一直到现在的 毫秒(js) 秒(s) 1s= 1000ms
echo time();
echo "<br>";

// 输出标准时间
echo date("Y-m-d H:i:s",time());
echo "<br>";

// 固定时间转换为时间蹉
$date = "2024-09-05";
echo strtotime($date);
echo "<br>";

// 文件创建时间
$ctext = filectime("./input.txt");
echo date("Y-m-d H:i:s",$ctext);
echo "<br>";

//文件浏览时间
$atext = fileatime("./input.txt");
echo date("Y-m-d H:i:s",$atext);
echo "<br>";


//文件修改时间
$mtext = filemtime("./input.txt");
echo date("Y-m-d H:i:s",$mtext);
echo "<br>";


/* 数组函数 索引数组 下标为数值 和 关联数组 下标为字母或数字 php中可以重复定义变量*/

$arr = [1,2,3,4,5];
// 添加数据
$arr[] = 0;
var_dump($arr);
echo "<br>";

$arr1 = ["name"=>1,"sex"=>2,0=>1];
/* 如果没有给设置键值 默认从数字开始 */
$arr1[] = "wdw";

var_dump($arr1);
echo "<br>";
// 删除一个变量 或一个数组元素
unset($arr1['name']);
var_dump($arr1);
echo '<br>';

// 返回数组长度count
var_dump(count($arr1));


// js arr.includes判断一个元素是否在数组中
// in_array 判断元素是否在数组中 in_array('值',数组) 

var_dump(in_array('2',$arr1));
echo "<br />";



// print_r == var_dump
print_r($arr1);
echo "<br />";
var_dump($arr1);
echo "<br />";

$arr2 = [6,3,2,3,1,4,1];
// 针对值排序
// 升序
sort($arr2);
// 降序
rsort($arr2);

var_dump($arr2);

echo "<br>";

// 针对索引进行排序
//对键升序
ksort($arr2);
//对键进行降序
krsort($arr2);

var_dump($arr2);
echo "<br>";

//字符串转数组split == explode 数组转字符串join == implode

$str = "1,2,3,4,5";
$arr4 = explode(',',$str);
var_dump(explode(',',$str));
echo "<br>";
var_dump(implode('-',$arr4));
echo "<br>";

$arr = ['a','b','c','d','e','f','g',5,7,1];

//从数组中随机选多个 返回的是随机选择的下标

var_dump(array_rand($arr,2));
echo '<br>';
// 返回数组第一个元素的下标缩影
var_dump(array_key_first($arr));
echo '<br>';

// 求和数组中的数值元素 其他元素默认为0
var_dump(array_sum($arr));
echo"<br />";


$str = "123 text";
printf("%d",$str);
echo "<br>";
printf("%s",$str);

// 去除两边空白元素 jQuery 中的写法 是 $.trim php中是 去左 ltrim(字符串) rtrim  trim
$str = "       Hello World!         ";
echo $str;
echo "\r\n";
echo ltrim($str);
echo "\r\n";
echo rtrim($str);
echo "\r\n";
echo trim($str);
echo "<br />";

// 加密方式 md5 sha1

$str = "123213";
echo md5($str);//不可逆的 如果本身数据库存在的话就可以查到，没查到就搜不出
echo "<br>";

echo sha1($str);


//字符串替换 str_replace 区分大小写 str_ireplace 不去分大小写

$str = "hello world";
echo str_ireplace("WORLD","wdw",$str);
echo "<br />";

//搜索  js indexOf -1 php 找不到返回false
// 加i的基本都是不区分大小写的 strpos stripos 查找元素
// boolean 类型 var_dump()能够看出显示结果
var_dump(stripos($str,"H")) ;
echo "<br />";

// 随机地打乱字符串中的所有字符

echo str_shuffle($str);
echo "<br />";


// 去除html标签 安全做法
$str = "<b>加粗</b><script src='http://www.xxxx.com/index.js'></script>";

$text = strip_tags($str);
echo $text;
echo "<br />";
// strtolower()  strtoupper() 大小写转换
$str = "hello world";
echo strtolower($str);
echo strtoupper($str);

//截取字符串

echo substr($str,0,7);





















?>